package com.zmz.Stream;

import java.util.*;
import java.util.stream.Collectors;

/**
 * Create with IntelliT IDEA
 *
 * @Author: zhengmingzhe
 * @Date: 2022/07/31/18:00
 * @Description: collect ,收集，可以说是内容最繁多，功能最丰富的部分。从字面上去理解，就是把一个流收集起来，最终可以收集成一个值也可以是一个新的集合。
 */
public class Stream08 {
    public static void main(String[] args) {
        List<Integer> list = Arrays.asList(1,3,2,4,5,12,42,12);
        //找出里面的偶数形成新的集合
        List<Integer> newList = list.stream().filter(t->t % 2 ==0).collect(Collectors.toList());
        System.out.println(newList);
        //找出里面的偶数形成一个新的Set集合
        Set newList1 = list.stream().filter(t->t % 2 ==0).collect(Collectors.toSet());
        System.out.println(newList1);

        List<Person> personList = new ArrayList<>();
        personList.add(new Person("的撒", 8000, 22, "女", "武汉"));
        personList.add(new Person("法按时", 7000, 22, "女", "武汉"));
        personList.add(new Person("的阿萨", 7800, 22, "男", "武汉"));
        personList.add(new Person("答案", 12000, 12, "女", "武汉"));
        personList.add(new Person("滴放", 22000, 21, "女", "北京"));
        //找出所有的人名，形成新的集合
        List<String> nameList = personList.stream().map(t->t.getName()).collect(Collectors.toList());
        System.out.println(nameList);

        //将上面的personList转成一个Map<String,Person> 名字作为key
        //以前写法
        Map<String,Person> newMap = new HashMap<>();
        for (Person person:personList){
            newMap.put(person.getName(),person);
        }

        //Stream的写法  用于List转Map
        Map<String,Person> newMap2 = personList.stream().collect(Collectors.toMap(p->p.getName(),p->p));
        System.out.println(newMap2);
    }
}
